<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>防抖</title>
</head>
<body>
  <input type="text" id="input">
  <script>
    // 防抖的函数
    function debounce(callback,delay){
      let timer
      return function(arg){
        clearTimeout(timer)
        // 我们想清除的是setTimeout
        // timer变量需要一直保存在内存当中
        // 既然不想打印之前已经输入的结果，清除以前触发的定时器
        //  我们应该存储这个timer
        // 一直要在内存当中（闭包）
        timer = setTimeout(() => {
          callback(arg)
        }, delay);
      }
    }
    function func(value){
      console.log(value)
    }
    var input = document.getElementById('input');
    var debounceFn = debounce(func,2000)
    // 输入框的结果只出现一次，且在
    input.addEventListener('keyup',function(e){
      debounceFn(e.target.value)
    })
    /* function debounce(delay){
      let timer
      return function(value){
        clearTimeout(timer)
        timer = setTimeout(() => {
          console.log(value)
        }, delay);
      }
    }
    var input = document.getElementById('input');
    var debounceFn = debounce(2000)
    input.addEventListener('keyup',function(e){
      debounceFn(e.target.value)
    }) */

    // 闭包：函数里面return出函数
  </script>
</body>
</html>